From: Dirkjan Ochtman Date: Thu, 5 Apr 2018 14:23:11 +0000 (+0200) Subject: Make a dependencies map while building feature map X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~1^2~36^2~6 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=4966f5394fbd562db1c7f069018a4e5781eadb7e;p=cargo.git Make a dependencies map while building feature map --- diff --git a/src/cargo/core/summary.rs b/src/cargo/core/summary.rs index a824233f9..d51db6b88 100644 --- a/src/cargo/core/summary.rs +++ b/src/cargo/core/summary.rs @@ -1,4 +1,4 @@ -use std::collections::BTreeMap; +use std::collections::{BTreeMap, HashMap}; use std::mem; use std::rc::Rc; @@ -133,6 +133,11 @@ fn build_feature_map( dependencies: &[Dependency], ) -> CargoResult { use self::FeatureValue::*; + let dep_map: HashMap<_, _> = dependencies + .iter() + .map(|d| (d.name().as_str(), d)) + .collect(); + let mut map = BTreeMap::new(); for (feature, list) in features.iter() { let mut values = vec![]; @@ -148,7 +153,7 @@ fn build_feature_map( match val { Feature(_) => None, Crate(ref dep_name) | CrateFeature(ref dep_name, _) => { - dependencies.iter().find(|d| d.name() == *dep_name) + dep_map.get(dep_name.as_str()) } } };